#include "SelectionColor.h"

using namespace WONAPI;

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SelectionColor::SelectionColor()
{
	mForegroundColor = ColorScheme::GetColorRef(StandardColor_HilightText);
	mBackgroundColor = ColorScheme::GetColorRef(StandardColor_Hilight);
	mMode = ForegroundSelectionMode_UseForegroundColor;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SelectionColor::SelectionColor(DWORD theBackgroundColor, ForegroundSelectionMode theMode)
{
 	mForegroundColor = 0xFFFFFF;
	mBackgroundColor = theBackgroundColor;
	mMode = theMode;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SelectionColor::SelectionColor(DWORD theBackgroundColor, DWORD theForegroundColor)
{
	mBackgroundColor = theBackgroundColor;
	mForegroundColor = theForegroundColor;
	mMode = ForegroundSelectionMode_UseForegroundColor;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void SelectionColor::SetForegroundColor(DWORD theForegroundColor)
{
	mForegroundColor = theForegroundColor;
	mMode = ForegroundSelectionMode_UseForegroundColor;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void SelectionColor::SetBackgroundColor(DWORD theBackgroundColor)
{
	mBackgroundColor = theBackgroundColor;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
DWORD SelectionColor::GetBackgroundColor(Graphics& g) const
{ 
	return mBackgroundColor; 
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
DWORD SelectionColor::GetForegroundColor(Graphics& g, DWORD theOriginalColor) const
{
	switch(mMode)
	{
		case ForegroundSelectionMode_UseOriginalColor: return theOriginalColor;
		case ForegroundSelectionMode_InvertOriginalColor: return theOriginalColor^0xFFFFFF;
		case ForegroundSelectionMode_UseForegroundColor: return mForegroundColor;
	}

	return 0xFFFFFF;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
